#include "Thread.hpp"
#include <unistd.h>

using namespace ThreadModlue;

/**
 * @brief 主函数
 * 
 * 该函数创建一个新线程，在线程中不断打印消息并休眠1秒，
 * 主线程等待5秒后停止子线程，再等待5秒后加入子线程。
 * 
 * @return int 程序返回值
 */
int main()
{
    // 创建一个新线程，线程函数为lambda表达式
    Thread t([](){
        // 无限循环
        while (true)
        {
            // 打印消息到标准输出
            fmt::print("我是一个新线程\n");
            // 线程休眠1秒
            sleep(1);
        }
    });
    
    // 将线程设置为分离状态，线程结束时资源自动释放
    t.Detach();
    // 启动线程
    t.Start();
    // 主线程休眠5秒
    sleep(5);
    // 停止线程（注意：这里假设Thread类有Stop方法，实际使用时需确保该方法的正确性和安全性）
    t.Stop();
    // 主线程再次休眠5秒
    sleep(5);
    // 主线程等待子线程结束
    t.Join();
    // 程序正常结束，返回0
    return 0;
}
